package com.ssy.lingxi.sms.api.common;

/**
 * 错误代码
 * @author jw.chen
 * @version 2.0.0
 * @date 2020/6/16
 */
public enum TencentErrorCodeEnum {

    UnsupportedOperation("UnsupportedOperation", "操作不支持"),
    ResourceInUse("ResourceInUse", "资源被占用"),
    InternalError("InternalError", "内部错误"),
    RequestLimitExceeded("RequestLimitExceeded", "请求的次数超过了频率限制"),
    AuthFailure_SecretIdNotFound("AuthFailure.SecretIdNotFound", "密钥不存在。 请在控制台检查密钥是否已被删除或者禁用，如状态正常，请检查密钥是否填写正确，注意前后不得有空格。"),
    LimitExceeded("LimitExceeded", "超过配额限制"),
    NoSuchVersion("NoSuchVersion", "接口版本不存在"),
    ResourceNotFound("ResourceNotFound", "资源不存在"),
    AuthFailure_SignatureFailure("AuthFailure.SignatureFailure", "签名错误。 签名计算错误，请对照调用方式中的签名方法文档检查签名计算过程。"),
    AuthFailure_SignatureExpire("AuthFailure.SignatureExpire", "签名过期。Timestamp 和服务器时间相差不得超过五分钟，请检查本地时间是否和标准时间同步。"),
    UnsupportedRegion("UnsupportedRegion", "接口不支持所传地域"),
    UnauthorizedOperation("UnauthorizedOperation", "未授权操作"),
    InvalidParameter("InvalidParameter", "参数错误"),
    AuthFailure_MFAFailure("AuthFailure.MFAFailure", "MFA 错误"),
    AuthFailure_UnauthorizedOperation("AuthFailure.UnauthorizedOperation", "请求未授权。请参考 CAM 文档对鉴权的说明。"),
    AuthFailure_InvalidSecretId("AuthFailure.InvalidSecretId", "密钥非法（不是云 API 密钥类型）"),
    AuthFailure_TokenFailure("AuthFailure.TokenFailure", "token 错误"),
    DryRunOperation("DryRunOperation", "DryRun 操作，代表请求将会是成功的，只是多传了 DryRun 参数"),
    FailedOperation("FailedOperation", "操作失败"),
    UnknownParameter("UnknownParameter", "未知参数错误"),
    UnsupportedProtocol("UnsupportedProtocol", "HTTP(S)请求协议错误，只支持 GET 和 POST 请求"),
    InvalidParameterValue("InvalidParameterValue", "参数取值错误"),
    InvalidAction("InvalidAction", "接口不存在"),
    MissingParameter("MissingParameter", "缺少参数错误"),
    ResourceInsufficient("ResourceInsufficient", "资源不足"),
    FailedOperation_ContainSensitiveWord("FailedOperation.ContainSensitiveWord", "短信内容中含有敏感词，请联系 sms helper"),
    FailedOperation_FailResolvePacket("FailedOperation.FailResolvePacket", "请求包解析失败，通常情况下是由于没有遵守 API 接口说明规范导致的，请参考 请求包体解析1004错误详解"),
    FailedOperation_InsufficientBalanceInSmsPackage("FailedOperation.InsufficientBalanceInSmsPackage", "套餐包余量不足，请 购买套餐包"),
    FailedOperation_JsonParseFail("FailedOperation.JsonParseFail", "解析请求包体时候失败"),
    FailedOperation_MarketingSendTimeConstraint("FailedOperation.MarketingSendTimeConstraint", "营销短信发送时间限制，为避免骚扰用户，营销短信只允许在8点到22点发送"),
    FailedOperation_MissingSignature("FailedOperation.MissingSignature", "没有申请签名之前，无法申请模板，请根据 创建签名 申请完成之后再次申请"),
    FailedOperation_MissingSignatureToModify("FailedOperation.MissingSignatureToModify", "此签名 ID 未提交申请或不存在，不能进行修改操作，请检查您的 SignId 是否填写正确"),
    FailedOperation_MissingTemplateToModify("FailedOperation.MissingTemplateToModify", "此模板 ID 未提交申请或不存在，不能进行修改操作，请检查您的 TemplateId是否填写正确"),
    FailedOperation_NotEnterpriseCertification("FailedOperation.NotEnterpriseCertification", "非企业认证无法使用签名及模版相关接口，您可以 变更实名认证模式，变更为企业认证用户后，约1小时左右生效"),
    FailedOperation_OtherError("FailedOperation.OtherError", "其他错误，一般是由于参数携带不符合要求导致，请参看API接口说明，如有需要请联系 sms helper"),
    FailedOperation_PhoneNumberInBlacklist("FailedOperation.PhoneNumberInBlacklist", "手机号在黑名单库中，通常是用户退订或者命中运营商黑名单导致的，可联系 sms helper 解决"),
    FailedOperation_PhoneNumberOnBlacklist("FailedOperation.PhoneNumberOnBlacklist", "手机号在黑名单库中，通常是用户退订或者命中运营商黑名单导致的，可联系 sms helper 解决"),
    FailedOperation_SignatureIncorrectOrUnapproved("FailedOperation.SignatureIncorrectOrUnapproved", "签名格式错误或者签名未审批，签名只能由中英文、数字组成，要求2 - 12个字。如果符合签名格式规范，请核查签名是否已审批"),
    FailedOperation_TemplateAlreadyPassedCheck("FailedOperation.TemplateAlreadyPassedCheck", "此模板已经通过审核，无法再次进行修改"),
    FailedOperation_TemplateIncorrectOrUnapproved("FailedOperation.TemplateIncorrectOrUnapproved", "模版未审批或请求的内容与审核通过的模版内容不匹配，请参考 1014错误详解"),
    InternalError_OtherError("InternalError.OtherError", "其他错误，请联系 sms helper 并提供失败手机号"),
    InternalError_RequestTimeException("InternalError.RequestTimeException", "请求发起时间不正常，通常是由于您的服务器时间与腾讯云服务器时间差异超过10分钟导致的，请核对服务器时间及 API 接口中的时间字段是否正常"),
    InternalError_RestApiInterfaceNotExist("InternalError.RestApiInterfaceNotExist", "不存在该 RESTAPI 接口，请核查 REST API 接口说明"),
    InternalError_SigFieldMissing("InternalError.SigFieldMissing", "后端包体中请求包体没有 Sig 字段或 Sig 为空"),
    InternalError_SigVerificationFail("InternalError.SigVerificationFail", "后端校验 Sig 失败"),
    InternalError_Timeout("InternalError.Timeout", "请求下发短信超时，请参考 60008错误详解"),
    InternalError_UnknownError("InternalError.UnknownError", "未知错误类型"),
    InvalidParameter_AppidAndBizId("InvalidParameter.AppidAndBizId", "账号与应用id不匹配"),
    InvalidParameter_InvalidParameters("InvalidParameter.InvalidParameters", "International 或者 SmsType 参数有误，如有需要请联系 sms helper"),
    InvalidParameterValue_ContentLengthLimit("InvalidParameterValue.ContentLengthLimit", "请求的短信内容太长，短信长度规则请参考 国内短信内容长度计算规则"),
    InvalidParameterValue_ImageInvalid("InvalidParameterValue.ImageInvalid", "上传的转码图片格式错误，请参照 API 接口说明中对改字段的说明，如有需要请联系 sms helper"),
    InvalidParameterValue_IncorrectPhoneNumber("InvalidParameterValue.IncorrectPhoneNumber", "手机号格式错误，请参考 1016错误详解"),
    InvalidParameterValue_InvalidDocumentType("InvalidParameterValue.InvalidDocumentType", "DocumentType 字段校验错误，请参照 API 接口说明中对改字段的说明，如有需要请联系 sms helper"),
    InvalidParameterValue_InvalidInternational("InvalidParameterValue.InvalidInternational", "International 字段校验错误，请参照 API 接口说明中对改字段的说明，如有需要请联系 sms helper"),
    InvalidParameterValue_InvalidStartTime("InvalidParameterValue.InvalidStartTime", "无效的拉取起始/截止时间，具体原因可能是请求的 SendDateTime 大于 EndDateTime"),
    InvalidParameterValue_InvalidUsedMethod("InvalidParameterValue.InvalidUsedMethod", "UsedMethod 字段校验错误，请参照 API 接口说明中对改字段的说明，如有需要请联系 sms helper"),
    InvalidParameterValue_MissingSignatureList("InvalidParameterValue.MissingSignatureList", "无法识别签名，请确认是否已有签名通过申请，一般是签名未通过申请，可以查看 签名审核"),
    InvalidParameterValue_ProhibitedUseUrlInTemplateParameter("InvalidParameterValue.ProhibitedUseUrlInTemplateParameter", "禁止在模板变量中使用 URL"),
    InvalidParameterValue_SdkAppidNotExist("InvalidParameterValue.SdkAppidNotExist", "SdkAppid 不存在"),
    InvalidParameterValue_SignAlreadyPassedCheck("InvalidParameterValue.SignAlreadyPassedCheck", "此签名已经通过审核，无法再次进行修改"),
    InvalidParameterValue_TemplateParameterFormatError("InvalidParameterValue.TemplateParameterFormatError", "验证码模板参数格式错误，验证码类模版，模版变量只能传入0 - 6位（包括6位）纯数字"),
    InvalidParameterValue_TemplateParameterLengthLimit("InvalidParameterValue.TemplateParameterLengthLimit", "单个模板变量字符数超过12个，企业认证用户不限制单个变量值字数，您可以 变更实名认证模式，变更为企业认证用户后，该限制变更约1小时左右生效"),
    LimitExceeded_AppDailyLimit("LimitExceeded.AppDailyLimit", "业务短信日下发条数超过设定的上限 ，可自行到控制台调整短信频率限制策略"),
    LimitExceeded_DailyLimit("LimitExceeded.DailyLimit", "短信日下发条数超过设定的上限 (国际/港澳台)，如需调整限制，可联系 sms helper"),
    LimitExceeded_DeliveryFrequencyLimit("LimitExceeded.DeliveryFrequencyLimit", "下发短信命中了频率限制策略，可自行到控制台调整短信频率限制策略，如有其他需求请联系 sms helper"),
    LimitExceeded_PhoneNumberCountLimit("LimitExceeded.PhoneNumberCountLimit", "调用短信发送 API 接口单次提交的手机号个数超过200个，请遵守 API 接口说明"),
    LimitExceeded_PhoneNumberDailyLimit("LimitExceeded.PhoneNumberDailyLimit", "单个手机号日下发短信条数超过设定的上限，可自行到控制台调整短信频率限制策略"),
    LimitExceeded_PhoneNumberOneHourLimit("LimitExceeded.PhoneNumberOneHourLimit", "单个手机号1小时内下发短信条数超过设定的上限，可自行到控制台调整短信频率限制策略"),
    LimitExceeded_PhoneNumberSameContentDailyLimit("LimitExceeded.PhoneNumberSameContentDailyLimit", "单个手机号下发相同内容超过设定的上限，可自行到控制台调整短信频率限制策略"),
    LimitExceeded_PhoneNumberThirtySecondLimit("LimitExceeded.PhoneNumberThirtySecondLimit", "单个手机号30秒内下发短信条数超过设定的上限，可自行到控制台调整短信频率限制策略"),
    MissingParameter_EmptyPhoneNumberSet("MissingParameter.EmptyPhoneNumberSet", "传入的号码列表为空，请确认您的参数中是否传入号码"),
    UnauthorizedOperation_IndividualUserMarketingSmsPermissionDeny("UnauthorizedOperation.IndividualUserMarketingSmsPermissionDeny", "个人用户没有发营销短信的权限，请参考 权益区别"),
    UnauthorizedOperation_RequestIpNotInWhitelist("UnauthorizedOperation.RequestIpNotInWhitelist", "请求 IP 不在白名单中，您配置了校验请求来源 IP，但是检测到当前请求 IP 不在配置列表中，如有需要请联系 sms helper"),
    UnauthorizedOperation_RequestPermissionDeny("UnauthorizedOperation.RequestPermissionDeny", "请求没有权限，请联系 sms helper"),
    UnauthorizedOperation_SdkAppidIsDisabled("UnauthorizedOperation.SdkAppidIsDisabled", "此 sdkappid 禁止提供服务，如有需要请联系 sms helper"),
    UnauthorizedOperation_SerivceSuspendDueToArrears("UnauthorizedOperation.SerivceSuspendDueToArrears", "欠费被停止服务，可自行登录腾讯云充值来缴清欠款"),
    UnauthorizedOperation_SmsSdkAppidVerifyFail("UnauthorizedOperation.SmsSdkAppidVerifyFail", "SmsSdkAppid 校验失败"),
    UnsupportedOperation_("UnsupportedOperation.", "不支持该请求"),
    UnsupportedOperation_ContainDomesticAndInternationalPhoneNumber("UnsupportedOperation.ContainDomesticAndInternationalPhoneNumber", "群发请求里既有国内手机号也有国际手机号"),
    UnsupportedOperation_UnsuportedRegion("UnsupportedOperation.UnsuportedRegion", "不支持该地区短信下发");


    private String code;
    private String message;

    TencentErrorCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public static String getMessage(String code){
        for (TencentErrorCodeEnum e : TencentErrorCodeEnum.values()) {
            if(code.equals(e.getCode())){
                return e.getMessage();
            }
        }
        return "未知错误";
    }
}
